5.3 本章小结

基于OCI的开放标准,Docker引擎目前采用模块化设计。

Docker daemon实现了Docker API,该API是一套功能丰富、基于版本的HTTP API,并且随着其他Docker项目的开发而演化。

对容器的操作由containerd完成。containerd由Docker公司开发,并贡献给了CNCF。它可以被看作是负责容器生命周期相关操作的容器管理器。它小巧而轻量,可被其他项目或第三方工具使用。例如,它已成为Kubernetes中默认的、常见的容器运行时。

containerd需要指挥与OCI兼容的容器运行时来创建容器。默认情况下,Docker使用runc作为其默认的容器运行时。runc已经是OCI容器运行时规范的事实上的实现了,它使用与OCI兼容的bundle来启动容器。containerd调用runc,并确保Docker镜像以OCI bundle的格式交给runc。

runc可以作为独立的CLI工具来创建容器。它基于Libcontainer,也可被其他项目或第三方工具使用。

仍然有许多的功能是在Docker daemon中实现的。其中的多数功能可能会随着时间的推移被拆解掉。目前Docker daemon中依然存在的功能包括但不限于API、镜像管理、身份认证、安全特性、核心网络以及卷。

Docker引擎的模块化工作仍在进行中。

20200219A6508F28.jpg

results matching ""

    No results matching ""